home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue59 / Arch / Extended Sample / UnitObjectResultSetBase.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-05-22  |  2.6 KB  |  109 lines

  1. unit UnitObjectResultSetBase;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   UnitObjectBase, Db, DBTables;
  8.  
  9. type
  10.   TObjectResultSetBase = class;
  11.   TObjectResultSetClass = class of TObjectResultSetBase;
  12.   TObjectResultSetBase = class(TObjectBase)
  13.     Query: TQuery;
  14.   private
  15.  
  16.     FSqlWhereClause: string;
  17.     FSqlOrderByClause: string;
  18.  
  19.     function GetSql: string;
  20.  
  21.   protected
  22.  
  23.     function GetSqlSelectClause: string; virtual; abstract; // Provided by the sub-class
  24.     function GetSqlFromClause: string; virtual; abstract; // Provided by the sub-class
  25.     function GetProtectedSqlWhereClause: string; virtual; // Optionally provided by the sub-class
  26.  
  27.     property ProtectedSqlWhereClause: string read GetProtectedSqlWhereClause;
  28.  
  29.     function GetSelectedRecordKey: integer; virtual; abstract; // Provided by the sub-class
  30.  
  31.   public
  32.  
  33.     property SqlSelectClause: string read GetSqlSelectClause;
  34.     property SqlFromClause: string read GetSqlFromClause;
  35.     property SqlWhereClause: string read FSqlWhereClause write FSqlWhereClause;
  36.     property SqlOrderByClause: string read FSqlOrderByClause write FSqlOrderByClause;
  37.  
  38.     property SelectedKey: integer read GetSelectedRecordKey;
  39.  
  40.     procedure RefreshResultSet;
  41.  
  42.     function IsEmpty: boolean;
  43.  
  44.   end;
  45.  
  46. var
  47.   ObjectResultSetBase: TObjectResultSetBase;
  48.  
  49. implementation
  50.  
  51. {$R *.DFM}
  52.  
  53. { TObjectResultSetBase }
  54.  
  55. function TObjectResultSetBase.IsEmpty: boolean;
  56. begin
  57.   Result := (Query.Bof and Query.Eof);
  58. end;
  59.  
  60. function TObjectResultSetBase.GetProtectedSqlWhereClause: string;
  61. begin
  62.  
  63. end;
  64.  
  65. function TObjectResultSetBase.GetSql: string;
  66. begin
  67.  
  68. end;
  69.  
  70. procedure TObjectResultSetBase.RefreshResultSet;
  71. var s: string;
  72. begin
  73.   Query.DisableControls;
  74.   try
  75.   Query.Close;
  76.   Query.SQL.Clear;
  77.   Query.SQL.Add('select');
  78.   Query.SQL.Add(SqlSelectClause);
  79.   Query.SQL.Add('from');
  80.   Query.SQL.Add(SqlFromClause);
  81.  
  82.   s := SqlWhereClause;
  83.   if (SqlWhereClause = '') and (ProtectedSqlWhereClause = '')
  84.     then s := ''
  85.   else if (SqlWhereClause = '') and (ProtectedSqlWhereClause <> '')
  86.     then s := ProtectedSqlWhereClause
  87.   else if (SqlWhereClause <> '') and (ProtectedSqlWhereClause = '')
  88.     then s := SqlWhereClause
  89.   else s := '(' + ProtectedSqlWhereClause + ') and (' + SqlWhereClause + ')';
  90.  
  91.   if (s <> '') then begin
  92.     Query.SQL.Add('where');
  93.     Query.SQL.Add(s);
  94.   end;
  95.  
  96.   if (SqlOrderByClause <> '') then begin
  97.     Query.SQL.Add('order by ');
  98.     Query.SQL.Add(SqlOrderByClause);
  99.   end;
  100.  
  101.   Query.Open;
  102.   finally
  103.   Query.EnableControls;
  104.   end; // try..finally
  105.   
  106. end;
  107.  
  108. end.
  109.